<?php

//CORREGIDA

namespace Medicina\KernelBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints as DoctrineAssert;

/**
 * Medicina\KernelBundle\Entity\Cargo
 *
 * @ORM\Table(name="cargo")
 * @ORM\Entity
 * @ORM\Entity(repositoryClass="Medicina\KernelBundle\Entity\CargoRepository")
 */
class Cargo {

    /**
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ORM\Column(name="codigo", type="string", length=10, nullable=true, unique=false)
     */
    private $codigo;

    /**
     *
     * @ORM\Column(name="tipo_de_dedicacion", type="string", length=50, nullable=false)
     */
    private $tipoDeDedicacion;

    /**
     * @ORM\ManyToOne(targetEntity="TipoDeCargo", inversedBy="cargos")
     * @ORM\JoinColumn(name="tipo_de_cargo_id", referencedColumnName="id")
     * 
     */
    private $tipoDeCargo;

    /**
     * @ORM\ManyToOne(targetEntity="Catedra", inversedBy="cargos")
     * @ORM\JoinColumn(name="catedra_id", referencedColumnName="id")
     * 
     */
    private $catedra;

    /**
     * @ORM\OneToMany(targetEntity="PersonaOcupaCargo", mappedBy="cargo", cascade={"persist"})
     * 
     */
    private $personas;

    /**
     * @ORM\ManyToMany(targetEntity="Concurso", mappedBy="cargos")
     */
    private $concursos;

    public function __construct() {
        $this->personas = new \Doctrine\Common\Collections\ArrayCollection();
        $this->concursos = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Get id
     *
     * @return integer $id
     */
    public function getId() {
        return $this->id;
    }

    /**
     * Set codigo
     *
     * @param string $codigo
     */
    public function setCodigo($codigo) {
        $this->codigo = $codigo;
    }

    /**
     * Get codigo
     *
     * @return string $codigo
     */
    public function getCodigo() {
        return $this->codigo;
    }

    /**
     * Set tipoDeDedicacion
     *
     * @param string $tipoDeDedicacion
     */
    public function setTipoDeDedicacion($tipoDeDedicacion) {
        $this->tipoDeDedicacion = $tipoDeDedicacion;
    }

    /**
     * Get tipoDeDedicacion
     *
     * @return string $tipoDeDedicacion
     */
    public function getTipoDeDedicacion() {
        return $this->tipoDeDedicacion;
    }

    /**
     * Set tipoDeCargo
     *
     * @param \Medicina\KernelBundle\Entity\TipoDeCargo $tipoDeCargo
     */
    public function setTipoDeCargo(\Medicina\KernelBundle\Entity\TipoDeCargo $tipoDeCargo) {
        $this->tipoDeCargo = $tipoDeCargo;
    }

    /**
     * Get tipoDeCargo
     *
     * @return \Medicina\KernelBundle\Entity\TipoDeCargo
     */
    public function getTipoDeCargo() {
        return $this->tipoDeCargo;
    }

    /**
     * Set catedra
     *
     * @param \Medicina\KernelBundle\Entity\Catedra $catedra
     */
    public function setCatedra(\Medicina\KernelBundle\Entity\Catedra $catedra) {
        $this->catedra = $catedra;
    }

    /**
     * Get catedra
     *
     * @return \Medicina\KernelBundle\Entity\Catedra
     */
    public function getCatedra() {
        return $this->catedra;
    }

    /**
     * Add personas
     *
     * @param \Medicina\KernelBundle\Entity\PersonaOcupaCargo $personas
     */
    public function addPersonaOcupaCargo(\Medicina\KernelBundle\Entity\PersonaOcupaCargo $personas) {
        $this->personas[] = $personas;
    }

    /**
     * Get personas
     *
     * @return \Medicina\KernelBundle\Entity\PersonaOcupaCargo
     */
    public function getPersonas() {
        return $this->personas;
    }

    /**
     * Add concursos
     *
     * @param \Medicina\KernelBundle\Entity\Concurso $concursos
     */
    public function addConcurso(\Medicina\KernelBundle\Entity\Concurso $concursos) {
        $this->concursos[] = $concursos;
    }

    /**
     * Get concursos
     *
     * @return \Medicina\KernelBundle\Entity\Concurso
     */
    public function getConcursos() {
        return $this->concursos;
    }

    public static function getTiposDeDedicacion() {
        return array('exclusiva' => 'Exclusiva', 'semi-exclusiva' => 'Semi Exclusiva', 'simple' => 'Simple');
    }

    public static function getTiposDeDedicacionValues() {
        return array_keys(self::getTiposDeDedicacion());
    }

    public function getInfo() {

        if ($this->getPersonas()->last()) {
            $ocupado = $this->getPersonas()->last()->getNombre();
        } {
            $ocupado = "Vacante";
        }
        return $this->getTipoDeCargo()->getNombre() . " |dedicación " . $this->getTipoDeDedicacion() . " | " . $ocupado;
    }

    public function getInfoPlus() {
        $ocupado = "";
        if ($this->getPersonas()->last()) {
            $ocupado = $this->getInfoShow();
        } else {
            $ocupado = "Vacante";
        }
        return $ocupado;
    }

    public function __toString() {

        if ($this->getPersonas()->last()) {
            $ocupado = $this->getPersonas()->last()->getNombre();
        } {
            $ocupado = "Vacante";
        }
        return $this->getTipoDeCargo()->getNombre() . " | dedicación " . $this->getTipoDeDedicacion() . " | " . $ocupado;
    }

    public function getInfoShow() {
        return $this->getPersonas()->last()->getInfoShow();
    }

    public function setPersonas($personas) {
        foreach ($personas as $persona) {
            $persona->setCargo($this);
            $this->addPersonaOcupaCargo($persona);
        }
    }
    
    
    public function getQuienLoOcupa(){
        $x = $this->getPersonas();
        if($x->count() == 0){
            return null;            
        }
        
       return  $this->getPersonas()->last();
        
    }

}